home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume10 / xt-examples / part01 next >
Encoding:
Internet Message Format  |  1990-11-04  |  68.6 KB

  1. Path: uunet!cs.utexas.edu!sun-barr!newstop!sun!adobe.com!asente
  2. From: asente@adobe.com
  3. Newsgroups: comp.sources.x
  4. Subject: v10i041: Examples from New Xt Book, Part01/05
  5. Message-ID: <csx-10i041:xt-examples@uunet.UU.NET>
  6. Date: 1 Nov 90 05:52:17 GMT
  7. Sender: news@sun.Eng.Sun.COM
  8. Lines: 2211
  9. Approved: argv@sun.com
  10.  
  11. Submitted-by: asente@adobe.com
  12. Posting-number: Volume 10, Issue 41
  13. Archive-name: xt-examples/part01
  14.  
  15. [ Moderator's note --
  16.   The following 5 shar's contain the source to the example programs used
  17.   in Paul Asente's new book on programming Xt, the toolkit intrinsics.
  18.   All flames for lack of Imakefile's should be directed to Paul :-)
  19.   No, this does *not* mean that you don't have to include Imakefiles
  20.   in your next submission!  --dan
  21. ]
  22.  
  23.  
  24. #! /bin/sh
  25. # This is a shell archive, meaning:
  26. # 1. Remove everything above the #! /bin/sh line.
  27. # 2. Save the resulting text in a file.
  28. # 3. Execute the file with /bin/sh (not csh) to create the files:
  29. #    README
  30. #    Makefile
  31. #    accel.c
  32. #    bargraph.c
  33. #    confirm.c
  34. #    confirm1.c
  35. #    gadget.c
  36. #    goodbye.c
  37. #    justify.c
  38. #    menu.c
  39. #    sensitive.c
  40. #    xbiff.c
  41. #    xcalc.c
  42. #    xmonitor.c
  43. #    DemoBiff
  44. #    DemoCalc
  45. #    DemoMonitor
  46. # This archive created: Wed Oct 24 14:28:46 1990
  47. export PATH; PATH=/bin:$PATH
  48. echo shar: extracting "'README'" '(4153 characters)'
  49. if test -f 'README'
  50. then
  51.     echo shar: will not over-write existing file "'README'"
  52. else
  53. sed 's/^    X//' << \SHAR_EOF > 'README'
  54.     XThis directory contains the sample widgets and applications described
  55.     Xin "X Window System Toolkit -- Programmer's Guide and Specification" by
  56.     XPaul Asente and Ralph Swick.  It also contains a number of simple
  57.     Xapplications to exercise the capabilities of the widgets.
  58.     X
  59.     XThis directory is not set up as software to be installed.  The only changes
  60.     Xthat might be necessary to make this build are the first three lines
  61.     Xof the Makefile, giving the locations of the Xt library, the X11 library,
  62.     Xand the X include files.
  63.     X
  64.     XThese widgets and applications require Intrinsics libraries and header
  65.     Xfiles that are Release 4, patched through fix-11 from Project Athena.
  66.     X
  67.     XThe test applications are entirely self-contained and do no rely upon
  68.     Xan application defaults file.  The sample applications xbiff, xcalc, and
  69.     Xxmonitor do require application defaults files.  The easiest way to run them
  70.     Xis to set the XAPPLRESDIR environment variable to : and to run the
  71.     Xapplications in the directory containing the defaults files.
  72.     X
  73.     XThe contents of this directory are:
  74.     X
  75.     XREADME        This file
  76.     XMakefile    The makefile for the software
  77.     Xfragments    A directory of code fragments that are not parts of
  78.     X        any of the other programs.
  79.     X
  80.     XBarDisplay.c    The implementation of the BarDisplay object
  81.     XBarDisplay.h    The public header file for the BarDisplay object
  82.     XBarDisplaP.h    The private header file for the BarDisplay object
  83.     X
  84.     XBox.c        The implementation of the Box widget
  85.     XBox.h        The public header file for the Box widget
  86.     XBoxP.h        The private header file for the Box widget
  87.     X
  88.     XConfirm.c    The implementation of the Confirm widget
  89.     XConfirm.h       The public header file for the Confirm widget
  90.     XConfirmP.h    The private header file for the Confirm widget
  91.     X
  92.     XConfirm1.c    The alternate implementation of the Confirm widget
  93.     XConfirm1.h    The public header file for the alternate Confirm widget
  94.     XConfirm1P.h    The private header file for the alternate Confirm widget
  95.     X
  96.     XGraph.c        The implementation of the Graph widget
  97.     XGraph.h        The public header file for the Graph widget
  98.     XGraphP.h    The private header file for the Graph widget
  99.     X
  100.     XGraphDispl.c    The implementation of the GraphDisplay object
  101.     XGraphDispP.h    The private header file for the GraphDisplay object
  102.     XGraphDispl.h    The public header file for the GraphDisplay object
  103.     X
  104.     XLabel.c        The implementation of the Label widget
  105.     XLabel.h        The private header file for the Label widget
  106.     XLabelP.h    The public header file for the Label widget
  107.     X
  108.     XLabelGadge.c    The implementation of the Label gadget
  109.     XLabelGadge.h    The private header file for the Label gadget
  110.     XLabelGadgP.h    The public header file for the Label gadget
  111.     X
  112.     XMenu.c        The implementation of the Menu widget
  113.     XMenu.h        The private header file for the Menu widget
  114.     XMenuP.h        The public header file for the Menu widget
  115.     X
  116.     XMenuItem.c    The implementation of the MenuItem widget
  117.     XMenuItem.h    The private header file for the MenuItem widget
  118.     XMenuItemP.h    The public header file for the MenuItem widget
  119.     X
  120.     XMinMax.c    The implementation of the MinMax widget
  121.     XMinMax.h    The private header file for the MinMax widget
  122.     XMinMaxP.h    The public header file for the MinMax widget
  123.     X
  124.     XPushbutton.c    The implementation of the Pushbutton widget
  125.     XPushbutton.h    The private header file for the Pushbutton widget
  126.     XPushbuttoP.h    The public header file for the Pushbutton widget
  127.     X
  128.     Xaccel.c        A test application to exercise accelerators
  129.     Xbargraph.c    A test application to exercise the Graph widget
  130.     Xconfirm.c    A test application to exercise the Confirm widget
  131.     Xconfirm1.c    A test application to exercise the alternate Confirm widget
  132.     Xgadget.c    A test application to exercise the Label gadget
  133.     Xgoodbye.c    A test application to exercise the Label and Pushbutton widgets
  134.     Xjustify.c    A test application to exercise Label widget justification
  135.     Xmenu.c        A test application to exercise the Menu widget
  136.     Xsensitive.c    A test application to exercise Pushbutton widget sensitivity
  137.     X
  138.     Xxbiff.c        The sample mail notifier application
  139.     Xxcalc.c        The sample calculator application
  140.     Xxmonitor.c    The sample system monitor application
  141.     X
  142.     XDemoBiff    The application defaults file for the mail notifier application
  143.     XDemoCalc    The application defaults file for the calculator application
  144.     XDemoMonitor    The application defaults file for the system monitor application
  145. SHAR_EOF
  146. if test 4153 -ne "`wc -c < 'README'`"
  147. then
  148.     echo shar: error transmitting "'README'" '(should have been 4153 characters)'
  149. fi
  150. fi # end of overwriting check
  151. echo shar: extracting "'Makefile'" '(2756 characters)'
  152. if test -f 'Makefile'
  153. then
  154.     echo shar: will not over-write existing file "'Makefile'"
  155. else
  156. sed 's/^    X//' << \SHAR_EOF > 'Makefile'
  157.     X#***********************************************************
  158.     X#Copyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  159.     X#
  160.     X#                        All Rights Reserved
  161.     X#
  162.     X#Permission to use, copy, modify, and distribute these examples for any
  163.     X#purpose and without fee is hereby granted, provided that the above
  164.     X#copyright notice appear in all copies and that both that copyright
  165.     X#notice and this permission notice appear in supporting documentation,
  166.     X#and that the name of Digital not be used in advertising or publicity
  167.     X#pertaining to distribution of the software without specific, written
  168.     X#prior permission.
  169.     X#
  170.     X#DIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  171.     X#SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  172.     X#FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  173.     X#OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  174.     X#OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  175.     X#OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  176.     X#OR PERFORMANCE OF THIS SOFTWARE.
  177.     X#
  178.     X#******************************************************************
  179.     X
  180.     X# Edit the following three lines to the appropriate X11R4 libraries
  181.     X# and include directories for your system
  182.     X
  183.     XXT = -lXt
  184.     XXLIB = -lX11
  185.     XINCLUDES = /usr/include
  186.     X
  187.     XWIDGETLIB = libwidgets.a
  188.     XCC = cc -g
  189.     XAR = ar cq 
  190.     X
  191.     XWIDGETS = BarDisplay.o Box.o Confirm.o Graph.o GraphDispl.o \
  192.     X    Label.o LabelGadge.o Menu.o MenuItem.o MinMax.o Pushbutton.o
  193.     X
  194.     XTESTS = accel bargraph confirm confirm1 gadget goodbye justify menu sensitive
  195.     X
  196.     XPROGRAMS = xbiff xcalc xmonitor
  197.     X
  198.     X.c.o:
  199.     X    ${CC} -c -I${INCLUDES} $*.c
  200.     X
  201.     Xall: widgets tests programs
  202.     X
  203.     Xwidgets: libwidgets.a
  204.     X
  205.     Xtests: ${TESTS}
  206.     X
  207.     Xprograms: ${PROGRAMS}
  208.     X
  209.     Xlibwidgets.a: ${WIDGETS}
  210.     X    rm -f $@
  211.     X    ${AR} $@ ${WIDGETS}
  212.     X    ranlib $@
  213.     X
  214.     Xaccel: accel.o
  215.     X    ${CC} -o accel accel.o ${WIDGETLIB} ${XT} ${XLIB}
  216.     X
  217.     Xbargraph: bargraph.o 
  218.     X    ${CC} -o bargraph bargraph.o ${WIDGETLIB} ${XT} ${XLIB}
  219.     X
  220.     Xconfirm: confirm.o
  221.     X    ${CC} -o confirm confirm.o ${WIDGETLIB} ${XT} ${XLIB}
  222.     X
  223.     Xconfirm1: confirm1.o Confirm1.o
  224.     X    ${CC} -o confirm1 confirm1.o Confirm1.o ${WIDGETLIB} ${XT} ${XLIB}
  225.     X
  226.     Xgadget: gadget.o
  227.     X    ${CC} -o gadget gadget.o ${WIDGETLIB} ${XT} ${XLIB}
  228.     X
  229.     Xgoodbye: goodbye.o 
  230.     X    ${CC} -o goodbye goodbye.o ${WIDGETLIB} ${XT} ${XLIB}
  231.     X
  232.     Xjustify: justify.o
  233.     X    ${CC} -o justify justify.o ${WIDGETLIB} ${XT} ${XLIB}
  234.     X
  235.     Xmenu: menu.o
  236.     X    ${CC} -o menu menu.o ${WIDGETLIB} ${XT} ${XLIB}
  237.     X
  238.     Xsensitive: sensitive.o
  239.     X    ${CC} -o sensitive sensitive.o ${WIDGETLIB} ${XT} ${XLIB}
  240.     X
  241.     Xxbiff: xbiff.o 
  242.     X    ${CC} -o xbiff xbiff.o ${WIDGETLIB} ${XT} ${XLIB}
  243.     X
  244.     Xxcalc: xcalc.o
  245.     X    ${CC} -o xcalc xcalc.o ${WIDGETLIB} ${XT} ${XLIB}
  246.     X
  247.     Xxmonitor: xmonitor.o
  248.     X    ${CC} -o xmonitor xmonitor.o ${WIDGETLIB} ${XT} ${XLIB}
  249.     X
  250.     Xclean:
  251.     X    rm -f *.o *.a *.BAK *.CKP *~ ${TESTS} ${PROGRAMS}
  252. SHAR_EOF
  253. if test 2756 -ne "`wc -c < 'Makefile'`"
  254. then
  255.     echo shar: error transmitting "'Makefile'" '(should have been 2756 characters)'
  256. fi
  257. fi # end of overwriting check
  258. echo shar: extracting "'accel.c'" '(3040 characters)'
  259. if test -f 'accel.c'
  260. then
  261.     echo shar: will not over-write existing file "'accel.c'"
  262. else
  263. sed 's/^    X//' << \SHAR_EOF > 'accel.c'
  264.     X/***********************************************************
  265.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  266.     X
  267.     X                        All Rights Reserved
  268.     X
  269.     XPermission to use, copy, modify, and distribute these examples for any
  270.     Xpurpose and without fee is hereby granted, provided that the above
  271.     Xcopyright notice appear in all copies and that both that copyright
  272.     Xnotice and this permission notice appear in supporting documentation,
  273.     Xand that the name of Digital not be used in advertising or publicity
  274.     Xpertaining to distribution of the software without specific, written
  275.     Xprior permission.
  276.     X
  277.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  278.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  279.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  280.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  281.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  282.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  283.     XOR PERFORMANCE OF THIS SOFTWARE.
  284.     X
  285.     X******************************************************************/
  286.     X
  287.     X#include <X11/Intrinsic.h>
  288.     X#include <X11/StringDefs.h>
  289.     X#include <X11/Shell.h>
  290.     X
  291.     X#include "Box.h"
  292.     X#include "Label.h"
  293.     X#include "Pushbutton.h"
  294.     X
  295.     Xvoid Goodbye(widget, clientData, callData)
  296.     X    Widget widget;
  297.     X    caddr_t clientData, callData;
  298.     X{
  299.     X    exit(0);
  300.     X}
  301.     X
  302.     XWidget pushbutton, box;
  303.     X
  304.     Xvoid InstallAccel(widget, clientData, callData)
  305.     X    Widget widget;
  306.     X    caddr_t clientData, callData;
  307.     X{
  308.     X    XtInstallAllAccelerators(box, box);
  309.     X}
  310.     X
  311.     Xint main(argc, argv)
  312.     X    unsigned int argc;
  313.     X    char **argv;
  314.     X{
  315.     X    Widget toplevel, label, accel;
  316.     X    Arg arg[25];
  317.     X    unsigned int n;
  318.     X    XtAppContext app;
  319.     X
  320.     X    toplevel = XtAppInitialize(&app, "Accel",
  321.     X        (XrmOptionDescList) NULL, 0, &argc, argv,
  322.     X        (String *) NULL, (ArgList) NULL, 0);
  323.     X
  324.     X    n = 0;
  325.     X    XtSetArg(arg[n], XtNinput, TRUE);    n++;
  326.     X    XtSetValues(toplevel, arg, n);
  327.     X
  328.     X    box = XtCreateManagedWidget("box", boxWidgetClass, toplevel,
  329.     X    (Arg *) NULL, 0);
  330.     X
  331.     X    n = 0;
  332.     X    XtSetArg(arg[n], XtNx, 10);    n++;
  333.     X    XtSetArg(arg[n], XtNy, 10);    n++;
  334.     X    XtSetArg(arg[n], XtNlabel, "Goodbye, world");    n++;
  335.     X
  336.     X    label = XtCreateManagedWidget("label", labelWidgetClass, box,
  337.     X    arg, n);
  338.     X
  339.     X    n = 0;
  340.     X    XtSetArg(arg[n], XtNx, 10); n++;
  341.     X    XtSetArg(arg[n], XtNy, 40); n++;
  342.     X    XtSetArg(arg[n], XtNlabel, "Install accelerators");    n++;
  343.     X
  344.     X    accel = XtCreateManagedWidget("accel", pushbuttonWidgetClass,
  345.     X    box, arg, n);
  346.     X
  347.     X    XtAddCallback(accel, XtNcallback, InstallAccel, NULL);
  348.     X
  349.     X    n = 0;
  350.     X    XtSetArg(arg[n], XtNx, 10); n++;
  351.     X    XtSetArg(arg[n], XtNy, 70); n++;
  352.     X    XtSetArg(arg[n], XtNlabel, "Click and die");    n++;
  353.     X    XtSetArg(arg[n], XtNaccelerators, 
  354.     X        XtParseAcceleratorTable(":Ctrl<Key>a: notify()"));    n++;
  355.     X    XtSetArg(arg[n], XtNacceleratorString, " (^A)");    n++;
  356.     X
  357.     X    pushbutton = XtCreateManagedWidget("pushbutton", pushbuttonWidgetClass,
  358.     X    box, arg, n);
  359.     X
  360.     X    XtAddCallback(pushbutton, XtNcallback, Goodbye, NULL);
  361.     X
  362.     X    XtRealizeWidget(toplevel);
  363.     X    XtAppMainLoop(app);
  364.     X}
  365. SHAR_EOF
  366. if test 3040 -ne "`wc -c < 'accel.c'`"
  367. then
  368.     echo shar: error transmitting "'accel.c'" '(should have been 3040 characters)'
  369. fi
  370. fi # end of overwriting check
  371. echo shar: extracting "'bargraph.c'" '(2233 characters)'
  372. if test -f 'bargraph.c'
  373. then
  374.     echo shar: will not over-write existing file "'bargraph.c'"
  375. else
  376. sed 's/^    X//' << \SHAR_EOF > 'bargraph.c'
  377.     X/***********************************************************
  378.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  379.     X
  380.     X                        All Rights Reserved
  381.     X
  382.     XPermission to use, copy, modify, and distribute these examples for any
  383.     Xpurpose and without fee is hereby granted, provided that the above
  384.     Xcopyright notice appear in all copies and that both that copyright
  385.     Xnotice and this permission notice appear in supporting documentation,
  386.     Xand that the name of Digital not be used in advertising or publicity
  387.     Xpertaining to distribution of the software without specific, written
  388.     Xprior permission.
  389.     X
  390.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  391.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  392.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  393.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  394.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  395.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  396.     XOR PERFORMANCE OF THIS SOFTWARE.
  397.     X
  398.     X******************************************************************/
  399.     X
  400.     X#include <X11/Intrinsic.h>
  401.     X#include <X11/StringDefs.h>
  402.     X
  403.     X#include "Graph.h"
  404.     X#include "BarDisplay.h"
  405.     X
  406.     Xint main(argc, argv)
  407.     X    unsigned int argc;
  408.     X    char **argv;
  409.     X{
  410.     X    Widget toplevel, graph, display;
  411.     X    int bars;
  412.     X    int barvalues[25];
  413.     X    String labels[25];
  414.     X    char buffer[25];
  415.     X    Arg arg[25];
  416.     X    unsigned int n;
  417.     X    XtAppContext app;
  418.     X
  419.     X    printf("How many bars? ");
  420.     X    scanf("%d", &bars);
  421.     X    for (n = 0; n < bars; n++) {
  422.     X    barvalues[n] = 10*n;
  423.     X    sprintf(buffer, "This is Label %d", n);
  424.     X    labels[n] = XtNewString(buffer);
  425.     X    }
  426.     X
  427.     X    toplevel = XtAppInitialize(&app, "BarGraph",
  428.     X        (XrmOptionDescList) NULL, 0, &argc, argv,
  429.     X        (String *) NULL, (ArgList) NULL, 0);
  430.     X
  431.     X    n = 0;
  432.     X    XtSetArg(arg[n], XtNnumEntries, bars); n++;
  433.     X    XtSetArg(arg[n], XtNlabels, labels); n++;
  434.     X    XtSetArg(arg[n], XtNvalues, barvalues); n++;
  435.     X    XtSetArg(arg[n], XtNmaxValue, 100); n++;    
  436.     X
  437.     X    graph = XtCreateManagedWidget("graph", graphWidgetClass, toplevel,
  438.     X    arg, n);
  439.     X
  440.     X    display = XtCreateManagedWidget("display", barDisplayObjectClass,
  441.     X    graph, NULL, 0);
  442.     X
  443.     X    XtRealizeWidget(toplevel);
  444.     X    XtAppMainLoop(app);
  445.     X}
  446. SHAR_EOF
  447. if test 2233 -ne "`wc -c < 'bargraph.c'`"
  448. then
  449.     echo shar: error transmitting "'bargraph.c'" '(should have been 2233 characters)'
  450. fi
  451. fi # end of overwriting check
  452. echo shar: extracting "'confirm.c'" '(2736 characters)'
  453. if test -f 'confirm.c'
  454. then
  455.     echo shar: will not over-write existing file "'confirm.c'"
  456. else
  457. sed 's/^    X//' << \SHAR_EOF > 'confirm.c'
  458.     X/***********************************************************
  459.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  460.     X
  461.     X                        All Rights Reserved
  462.     X
  463.     XPermission to use, copy, modify, and distribute these examples for any
  464.     Xpurpose and without fee is hereby granted, provided that the above
  465.     Xcopyright notice appear in all copies and that both that copyright
  466.     Xnotice and this permission notice appear in supporting documentation,
  467.     Xand that the name of Digital not be used in advertising or publicity
  468.     Xpertaining to distribution of the software without specific, written
  469.     Xprior permission.
  470.     X
  471.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  472.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  473.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  474.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  475.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  476.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  477.     XOR PERFORMANCE OF THIS SOFTWARE.
  478.     X
  479.     X******************************************************************/
  480.     X
  481.     X#include <X11/Intrinsic.h>
  482.     X#include <X11/StringDefs.h>
  483.     X#include <X11/Shell.h>
  484.     X
  485.     X#include "Box.h"
  486.     X#include "Label.h"
  487.     X#include "Pushbutton.h"
  488.     X#include "Confirm.h"
  489.     X
  490.     Xvoid Goodbye(widget, clientData, callData)
  491.     X    Widget widget;
  492.     X    caddr_t clientData, callData;
  493.     X{
  494.     X    exit(0);
  495.     X}
  496.     X
  497.     Xint main(argc, argv)
  498.     X    unsigned int argc;
  499.     X    char **argv;
  500.     X{
  501.     X    Widget toplevel, label, pushbutton, box, confirmshell, confirm;
  502.     X    Arg arg[25];
  503.     X    unsigned int n;
  504.     X    XtAppContext app;
  505.     X
  506.     X    toplevel = XtAppInitialize(&app, "Confirm",
  507.     X        (XrmOptionDescList) NULL, 0, &argc, argv,
  508.     X        (String *) NULL, (ArgList) NULL, 0);
  509.     X
  510.     X    box = XtCreateManagedWidget("box", boxWidgetClass, toplevel,
  511.     X    (Arg *) NULL, 0);
  512.     X
  513.     X    n = 0;
  514.     X    XtSetArg(arg[n], XtNx, 10);    n++;
  515.     X    XtSetArg(arg[n], XtNy, 10);    n++;
  516.     X    XtSetArg(arg[n], XtNlabel, "Goodbye, world");    n++;
  517.     X
  518.     X    label = XtCreateManagedWidget("label", labelWidgetClass, box,
  519.     X    arg, n);
  520.     X
  521.     X    n = 0;
  522.     X    XtSetArg(arg[n], XtNx, 10); n++;
  523.     X    XtSetArg(arg[n], XtNy, 40); n++;
  524.     X    XtSetArg(arg[n], XtNlabel, "Click and die");    n++;
  525.     X
  526.     X    pushbutton = XtCreateManagedWidget("pushbutton", pushbuttonWidgetClass,
  527.     X    box, arg, n);
  528.     X
  529.     X    confirmshell = XtCreatePopupShell("confirmShell",
  530.     X        transientShellWidgetClass, pushbutton, NULL, 0);
  531.     X
  532.     X    n = 0;
  533.     X    XtSetArg(arg[n], XtNlabel, "Exiting program");    n++;
  534.     X    
  535.     X    confirm = XtCreateManagedWidget("confirm", confirmWidgetClass,
  536.     X        confirmshell, arg, n);
  537.     X
  538.     X    XtAddCallback(pushbutton, XtNcallback, XtCallbackNone, confirmshell);
  539.     X    XtAddCallback(confirm, XtNcallback, Goodbye, NULL);
  540.     X
  541.     X    XtRealizeWidget(toplevel);
  542.     X    XtAppMainLoop(app);
  543.     X}
  544. SHAR_EOF
  545. if test 2736 -ne "`wc -c < 'confirm.c'`"
  546. then
  547.     echo shar: error transmitting "'confirm.c'" '(should have been 2736 characters)'
  548. fi
  549. fi # end of overwriting check
  550. echo shar: extracting "'confirm1.c'" '(2737 characters)'
  551. if test -f 'confirm1.c'
  552. then
  553.     echo shar: will not over-write existing file "'confirm1.c'"
  554. else
  555. sed 's/^    X//' << \SHAR_EOF > 'confirm1.c'
  556.     X/***********************************************************
  557.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  558.     X
  559.     X                        All Rights Reserved
  560.     X
  561.     XPermission to use, copy, modify, and distribute these examples for any
  562.     Xpurpose and without fee is hereby granted, provided that the above
  563.     Xcopyright notice appear in all copies and that both that copyright
  564.     Xnotice and this permission notice appear in supporting documentation,
  565.     Xand that the name of Digital not be used in advertising or publicity
  566.     Xpertaining to distribution of the software without specific, written
  567.     Xprior permission.
  568.     X
  569.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  570.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  571.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  572.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  573.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  574.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  575.     XOR PERFORMANCE OF THIS SOFTWARE.
  576.     X
  577.     X******************************************************************/
  578.     X
  579.     X#include <X11/Intrinsic.h>
  580.     X#include <X11/StringDefs.h>
  581.     X#include <X11/Shell.h>
  582.     X
  583.     X#include "Box.h"
  584.     X#include "Label.h"
  585.     X#include "Pushbutton.h"
  586.     X#include "Confirm1.h"
  587.     X
  588.     Xvoid Goodbye(widget, clientData, callData)
  589.     X    Widget widget;
  590.     X    caddr_t clientData, callData;
  591.     X{
  592.     X    exit(0);
  593.     X}
  594.     X
  595.     Xint main(argc, argv)
  596.     X    unsigned int argc;
  597.     X    char **argv;
  598.     X{
  599.     X    Widget toplevel, label, pushbutton, box, confirmshell, confirm;
  600.     X    Arg arg[25];
  601.     X    unsigned int n;
  602.     X    XtAppContext app;
  603.     X
  604.     X    toplevel = XtAppInitialize(&app, "Confirm",
  605.     X        (XrmOptionDescList) NULL, 0, &argc, argv,
  606.     X        (String *) NULL, (ArgList) NULL, 0);
  607.     X
  608.     X    box = XtCreateManagedWidget("box", boxWidgetClass, toplevel,
  609.     X    (Arg *) NULL, 0);
  610.     X
  611.     X    n = 0;
  612.     X    XtSetArg(arg[n], XtNx, 10);    n++;
  613.     X    XtSetArg(arg[n], XtNy, 10);    n++;
  614.     X    XtSetArg(arg[n], XtNlabel, "Goodbye, world");    n++;
  615.     X
  616.     X    label = XtCreateManagedWidget("label", labelWidgetClass, box,
  617.     X    arg, n);
  618.     X
  619.     X    n = 0;
  620.     X    XtSetArg(arg[n], XtNx, 10); n++;
  621.     X    XtSetArg(arg[n], XtNy, 40); n++;
  622.     X    XtSetArg(arg[n], XtNlabel, "Click and die");    n++;
  623.     X
  624.     X    pushbutton = XtCreateManagedWidget("pushbutton", pushbuttonWidgetClass,
  625.     X    box, arg, n);
  626.     X
  627.     X    confirmshell = XtCreatePopupShell("confirmShell",
  628.     X        transientShellWidgetClass, pushbutton, NULL, 0);
  629.     X
  630.     X    n = 0;
  631.     X    XtSetArg(arg[n], XtNlabel, "Exiting program");    n++;
  632.     X    
  633.     X    confirm = XtCreateManagedWidget("confirm", confirmWidgetClass,
  634.     X        confirmshell, arg, n);
  635.     X
  636.     X    XtAddCallback(pushbutton, XtNcallback, XtCallbackNone, confirmshell);
  637.     X    XtAddCallback(confirm, XtNcallback, Goodbye, NULL);
  638.     X
  639.     X    XtRealizeWidget(toplevel);
  640.     X    XtAppMainLoop(app);
  641.     X}
  642. SHAR_EOF
  643. if test 2737 -ne "`wc -c < 'confirm1.c'`"
  644. then
  645.     echo shar: error transmitting "'confirm1.c'" '(should have been 2737 characters)'
  646. fi
  647. fi # end of overwriting check
  648. echo shar: extracting "'gadget.c'" '(2498 characters)'
  649. if test -f 'gadget.c'
  650. then
  651.     echo shar: will not over-write existing file "'gadget.c'"
  652. else
  653. sed 's/^    X//' << \SHAR_EOF > 'gadget.c'
  654.     X/***********************************************************
  655.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  656.     X
  657.     X                        All Rights Reserved
  658.     X
  659.     XPermission to use, copy, modify, and distribute these examples for any
  660.     Xpurpose and without fee is hereby granted, provided that the above
  661.     Xcopyright notice appear in all copies and that both that copyright
  662.     Xnotice and this permission notice appear in supporting documentation,
  663.     Xand that the name of Digital not be used in advertising or publicity
  664.     Xpertaining to distribution of the software without specific, written
  665.     Xprior permission.
  666.     X
  667.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  668.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  669.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  670.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  671.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  672.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  673.     XOR PERFORMANCE OF THIS SOFTWARE.
  674.     X
  675.     X******************************************************************/
  676.     X
  677.     X#include <X11/Intrinsic.h>
  678.     X#include <X11/StringDefs.h>
  679.     X
  680.     X#include "Box.h"
  681.     X#include "LabelGadge.h"
  682.     X#include "Pushbutton.h"
  683.     X
  684.     Xvoid Goodbye(widget, clientData, callData)
  685.     X    Widget widget;
  686.     X    caddr_t clientData, callData;
  687.     X{
  688.     X    exit(0);
  689.     X}
  690.     X
  691.     Xint main(argc, argv)
  692.     X    unsigned int argc;
  693.     X    char **argv;
  694.     X{
  695.     X    Widget toplevel, label, pushbutton, box;
  696.     X    Arg arg[25];
  697.     X    unsigned int n;
  698.     X    XtAppContext app;
  699.     X
  700.     X    toplevel = XtAppInitialize(&app, "Gadget",
  701.     X        (XrmOptionDescList) NULL, 0, &argc, argv,
  702.     X        (String *) NULL, (ArgList) NULL, 0);
  703.     X
  704.     X    box = XtCreateManagedWidget("box", boxWidgetClass, toplevel,
  705.     X    (Arg *) NULL, 0);
  706.     X
  707.     X    /* Make the gadget small to make sure it's clipping to its size
  708.     X       correctly. */
  709.     X
  710.     X    n = 0;
  711.     X    XtSetArg(arg[n], XtNx, 10);    n++;
  712.     X    XtSetArg(arg[n], XtNy, 10);    n++;
  713.     X    XtSetArg(arg[n], XtNwidth, 70);    n++;
  714.     X    XtSetArg(arg[n], XtNheight, 12);    n++;
  715.     X    XtSetArg(arg[n], XtNlabel, "Goodbye, world");    n++;
  716.     X
  717.     X    label = XtCreateManagedWidget("label", labelGadgetClass, box,
  718.     X    arg, n);
  719.     X
  720.     X    n = 0;
  721.     X    XtSetArg(arg[n], XtNx, 10); n++;
  722.     X    XtSetArg(arg[n], XtNy, 40); n++;
  723.     X    XtSetArg(arg[n], XtNlabel, "Click and die");    n++;
  724.     X
  725.     X    pushbutton = XtCreateManagedWidget("pushbutton", pushbuttonWidgetClass,
  726.     X    box, arg, n);
  727.     X
  728.     X    XtAddCallback(pushbutton, XtNcallback, Goodbye, NULL);
  729.     X
  730.     X    XtRealizeWidget(toplevel);
  731.     X    XtAppMainLoop(app);
  732.     X}
  733. SHAR_EOF
  734. if test 2498 -ne "`wc -c < 'gadget.c'`"
  735. then
  736.     echo shar: error transmitting "'gadget.c'" '(should have been 2498 characters)'
  737. fi
  738. fi # end of overwriting check
  739. echo shar: extracting "'goodbye.c'" '(2390 characters)'
  740. if test -f 'goodbye.c'
  741. then
  742.     echo shar: will not over-write existing file "'goodbye.c'"
  743. else
  744. sed 's/^    X//' << \SHAR_EOF > 'goodbye.c'
  745.     X/***********************************************************
  746.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  747.     X
  748.     X                        All Rights Reserved
  749.     X
  750.     XPermission to use, copy, modify, and distribute these examples for any
  751.     Xpurpose and without fee is hereby granted, provided that the above
  752.     Xcopyright notice appear in all copies and that both that copyright
  753.     Xnotice and this permission notice appear in supporting documentation,
  754.     Xand that the name of Digital not be used in advertising or publicity
  755.     Xpertaining to distribution of the software without specific, written
  756.     Xprior permission.
  757.     X
  758.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  759.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  760.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  761.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  762.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  763.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  764.     XOR PERFORMANCE OF THIS SOFTWARE.
  765.     X
  766.     X******************************************************************/
  767.     X
  768.     X#include <X11/Intrinsic.h>    /* Standard include files */
  769.     X#include <X11/StringDefs.h>
  770.     X#include "Box.h"        /* Widget include files */
  771.     X#include "Label.h"
  772.     X#include "Pushbutton.h"
  773.     X
  774.     Xvoid Goodbye(widget, clientData, callData)   /* Callback procedure */
  775.     X    Widget widget;
  776.     X    XtPointer clientData, callData;
  777.     X{
  778.     X    exit(0);
  779.     X}
  780.     X
  781.     XArg labelArgs[] = {    /* The arguments to the label widget */
  782.     X    {XtNx,    10},
  783.     X    {XtNy,    10},
  784.     X    {XtNlabel,    "Goodbye, world"}};
  785.     X
  786.     XArg buttonArgs[] = {    /* The arguments to the button widget */
  787.     X    {XtNx,    10},
  788.     X    {XtNy,    40},
  789.     X    {XtNlabel,    "Click and die"}};
  790.     X
  791.     Xint main(argc, argv)
  792.     X    unsigned int argc;
  793.     X    char **argv;
  794.     X{
  795.     X    Widget toplevel, label, button, box;
  796.     X    XtAppContext app;
  797.     X
  798.     X    toplevel = XtAppInitialize(&app, "Goodbye",
  799.     X        (XrmOptionDescList) NULL, 0, &argc, argv,
  800.     X        (String *) NULL, (ArgList) NULL, 0);
  801.     X
  802.     X    box = XtCreateManagedWidget("box", boxWidgetClass,
  803.     X        toplevel, (Arg *) NULL, 0);
  804.     X
  805.     X    label = XtCreateManagedWidget("label", labelWidgetClass,
  806.     X        box, labelArgs, XtNumber(labelArgs));
  807.     X
  808.     X    button = XtCreateManagedWidget("button", pushbuttonWidgetClass,
  809.     X        box, buttonArgs, XtNumber(buttonArgs));
  810.     X    XtAddCallback(button, XtNcallback, Goodbye, NULL);
  811.     X
  812.     X    XtRealizeWidget(toplevel);
  813.     X    XtAppMainLoop(app);
  814.     X}
  815. SHAR_EOF
  816. if test 2390 -ne "`wc -c < 'goodbye.c'`"
  817. then
  818.     echo shar: error transmitting "'goodbye.c'" '(should have been 2390 characters)'
  819. fi
  820. fi # end of overwriting check
  821. echo shar: extracting "'justify.c'" '(3169 characters)'
  822. if test -f 'justify.c'
  823. then
  824.     echo shar: will not over-write existing file "'justify.c'"
  825. else
  826. sed 's/^    X//' << \SHAR_EOF > 'justify.c'
  827.     X/***********************************************************
  828.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  829.     X
  830.     X                        All Rights Reserved
  831.     X
  832.     XPermission to use, copy, modify, and distribute these examples for any
  833.     Xpurpose and without fee is hereby granted, provided that the above
  834.     Xcopyright notice appear in all copies and that both that copyright
  835.     Xnotice and this permission notice appear in supporting documentation,
  836.     Xand that the name of Digital not be used in advertising or publicity
  837.     Xpertaining to distribution of the software without specific, written
  838.     Xprior permission.
  839.     X
  840.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  841.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  842.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  843.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  844.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  845.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  846.     XOR PERFORMANCE OF THIS SOFTWARE.
  847.     X
  848.     X******************************************************************/
  849.     X
  850.     X#include <X11/Intrinsic.h>
  851.     X#include <X11/StringDefs.h>
  852.     X
  853.     X#include "MinMax.h"
  854.     X#include "Label.h"
  855.     X#include "Pushbutton.h"
  856.     X
  857.     Xvoid Goodbye(widget, clientData, callData)
  858.     X    Widget widget;
  859.     X    caddr_t clientData, callData;
  860.     X{
  861.     X    exit(0);
  862.     X}
  863.     X
  864.     XWidget pushbutton;
  865.     X
  866.     Xvoid Rejustify(widget, clientData, callData)
  867.     X    Widget widget;
  868.     X    caddr_t clientData, callData;
  869.     X{
  870.     X    static Justify justify = Left;
  871.     X    Arg arg[1];
  872.     X
  873.     X    if (justify == Left) justify = Center;
  874.     X    else if (justify == Center) justify = Right;
  875.     X    else justify = Left;
  876.     X
  877.     X    XtSetArg(arg[0], XtNjustify, justify);
  878.     X    XtSetValues(pushbutton, arg, 1);
  879.     X}
  880.     X
  881.     Xint main(argc, argv)
  882.     X    unsigned int argc;
  883.     X    char **argv;
  884.     X{
  885.     X    Widget toplevel, label, justify, box;
  886.     X    Arg arg[25];
  887.     X    unsigned int n;
  888.     X    XtAppContext app;
  889.     X
  890.     X    toplevel = XtAppInitialize(&app, "Justify",
  891.     X        (XrmOptionDescList) NULL, 0, &argc, argv,
  892.     X        (String *) NULL, (ArgList) NULL, 0);
  893.     X
  894.     X    box = XtCreateManagedWidget("box", minMaxWidgetClass, toplevel,
  895.     X    (Arg *) NULL, 0);
  896.     X
  897.     X    n = 0;
  898.     X    XtSetArg(arg[n], XtNx, 10);    n++;
  899.     X    XtSetArg(arg[n], XtNy, 10);    n++;
  900.     X    XtSetArg(arg[n], XtNlabel, "Goodbye, world");    n++;
  901.     X
  902.     X    label = XtCreateManagedWidget("label", labelWidgetClass, box,
  903.     X    arg, n);
  904.     X
  905.     X    n = 0;
  906.     X    XtSetArg(arg[n], XtNx, 10); n++;
  907.     X    XtSetArg(arg[n], XtNy, 40); n++;
  908.     X    XtSetArg(arg[n], XtNlabel, "Change justification");    n++;
  909.     X
  910.     X    justify = XtCreateManagedWidget("justify", pushbuttonWidgetClass,
  911.     X    box, arg, n);
  912.     X
  913.     X    XtAddCallback(justify, XtNcallback, Rejustify, NULL);
  914.     X
  915.     X    n = 0;
  916.     X    XtSetArg(arg[n], XtNx, 10); n++;
  917.     X    XtSetArg(arg[n], XtNy, 70); n++;
  918.     X    XtSetArg(arg[n], XtNlabel, "Click and die");    n++;
  919.     X    XtSetArg(arg[n], XtNminWidth, 50);    n++;
  920.     X    XtSetArg(arg[n], XtNmaxWidth, 200);    n++;
  921.     X    XtSetArg(arg[n], XtNminHeight, 15);    n++;
  922.     X    XtSetArg(arg[n], XtNmaxHeight, 100);    n++;
  923.     X
  924.     X    pushbutton = XtCreateManagedWidget("pushbutton", pushbuttonWidgetClass,
  925.     X    box, arg, n);
  926.     X
  927.     X    XtAddCallback(pushbutton, XtNcallback, Goodbye, NULL);
  928.     X
  929.     X    XtRealizeWidget(toplevel);
  930.     X    XtAppMainLoop(app);
  931.     X}
  932. SHAR_EOF
  933. if test 3169 -ne "`wc -c < 'justify.c'`"
  934. then
  935.     echo shar: error transmitting "'justify.c'" '(should have been 3169 characters)'
  936. fi
  937. fi # end of overwriting check
  938. echo shar: extracting "'menu.c'" '(5539 characters)'
  939. if test -f 'menu.c'
  940. then
  941.     echo shar: will not over-write existing file "'menu.c'"
  942. else
  943. sed 's/^    X//' << \SHAR_EOF > 'menu.c'
  944.     X/***********************************************************
  945.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  946.     X
  947.     X                        All Rights Reserved
  948.     X
  949.     XPermission to use, copy, modify, and distribute these examples for any
  950.     Xpurpose and without fee is hereby granted, provided that the above
  951.     Xcopyright notice appear in all copies and that both that copyright
  952.     Xnotice and this permission notice appear in supporting documentation,
  953.     Xand that the name of Digital not be used in advertising or publicity
  954.     Xpertaining to distribution of the software without specific, written
  955.     Xprior permission.
  956.     X
  957.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  958.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  959.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  960.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  961.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  962.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  963.     XOR PERFORMANCE OF THIS SOFTWARE.
  964.     X
  965.     X******************************************************************/
  966.     X
  967.     X#include <X11/Intrinsic.h>
  968.     X#include <X11/StringDefs.h>
  969.     X#include <X11/Shell.h>
  970.     X
  971.     X#include "Box.h"
  972.     X#include "Label.h"
  973.     X#include "Pushbutton.h"
  974.     X#include "Menu.h"
  975.     X#include "MenuItem.h"
  976.     X
  977.     Xvoid Goodbye(widget, clientData, callData)
  978.     X    Widget widget;
  979.     X    caddr_t clientData, callData;
  980.     X{
  981.     X    exit(0);
  982.     X}
  983.     X
  984.     Xvoid Widen(widget, clientData, callData)
  985.     X    Widget widget;
  986.     X    caddr_t clientData, callData;
  987.     X{
  988.     X    Widget w = (Widget) clientData;
  989.     X    Arg arg[25];
  990.     X    int n;
  991.     X    String label;
  992.     X    char buffer[100];
  993.     X
  994.     X    n = 0;
  995.     X    XtSetArg(arg[n], XtNlabel, &label);    n++;
  996.     X
  997.     X    XtGetValues(w, arg, n);
  998.     X    strcpy(&buffer[1], label);
  999.     X    buffer[0] = buffer[1];
  1000.     X
  1001.     X    n = 0;
  1002.     X    XtSetArg(arg[n], XtNlabel, buffer);    n++;
  1003.     X    XtSetArg(arg[n], XtNwidth, 0);    n++;
  1004.     X    XtSetArg(arg[n], XtNheight, 0);    n++;
  1005.     X
  1006.     X    XtSetValues(w, arg, n);
  1007.     X}
  1008.     X
  1009.     Xvoid Narrow(widget, clientData, callData)
  1010.     X    Widget widget;
  1011.     X    caddr_t clientData, callData;
  1012.     X{
  1013.     X    Widget w = (Widget) clientData;
  1014.     X    Arg arg[25];
  1015.     X    int n;
  1016.     X    String label;
  1017.     X    char buffer[100];
  1018.     X
  1019.     X    n = 0;
  1020.     X    XtSetArg(arg[n], XtNlabel, &label);    n++;
  1021.     X
  1022.     X    XtGetValues(w, arg, n);
  1023.     X    strcpy(buffer, &label[1]);
  1024.     X
  1025.     X    n = 0;
  1026.     X    XtSetArg(arg[n], XtNlabel, buffer);    n++;
  1027.     X    XtSetArg(arg[n], XtNwidth, 0);    n++;
  1028.     X    XtSetArg(arg[n], XtNheight, 0);    n++;
  1029.     X
  1030.     X    XtSetValues(w, arg, n);
  1031.     X}
  1032.     X
  1033.     Xvoid Shuffle(widget, clientData, callData)
  1034.     X    Widget widget;
  1035.     X    caddr_t clientData, callData;
  1036.     X{
  1037.     X    Widget w = (Widget) clientData;
  1038.     X    Arg arg[25];
  1039.     X    int n;
  1040.     X
  1041.     X    n = 0;
  1042.     X    XtSetArg(arg[n], XtNinsertBefore, 1);    n++;
  1043.     X    XtSetValues(w, arg, n);
  1044.     X}
  1045.     X
  1046.     XWidget menushell;
  1047.     X
  1048.     Xstatic void RepositionMenu(w, event, params, num_params)
  1049.     X    Widget w;
  1050.     X    XEvent *event;
  1051.     X    String *params;
  1052.     X    Cardinal *num_params;
  1053.     X{
  1054.     X    XButtonEvent *b = &event->xbutton;
  1055.     X    Dimension width, height, border;
  1056.     X    Arg arg[25];
  1057.     X    int n;
  1058.     X
  1059.     X    if (event->xany.type != ButtonPress) return;
  1060.     X
  1061.     X    XtRealizeWidget(menushell);
  1062.     X
  1063.     X    n = 0;
  1064.     X    XtSetArg(arg[n], XtNwidth, &width);        n++;
  1065.     X    XtSetArg(arg[n], XtNheight, &height);    n++;
  1066.     X    XtSetArg(arg[n], XtNborderWidth, &border);    n++;
  1067.     X    XtGetValues(menushell, arg, n);
  1068.     X
  1069.     X    n = 0;
  1070.     X    XtSetArg(arg[n], XtNx, b->x_root - width/2 - border);    n++;
  1071.     X    XtSetArg(arg[n], XtNy, b->y_root - height/2 - border);    n++;
  1072.     X    XtSetValues(menushell, arg, n);
  1073.     X}
  1074.     X
  1075.     XXtActionsRec actions[] = {
  1076.     X    {"RepositionMenu", RepositionMenu}
  1077.     X};
  1078.     X
  1079.     Xstatic char *menuTranslations = 
  1080.     X    "<Btn1Down>        : RepositionMenu() MenuPopup(menuShell) unhighlight()";
  1081.     X
  1082.     X
  1083.     Xint main(argc, argv)
  1084.     X    unsigned int argc;
  1085.     X    char **argv;
  1086.     X{
  1087.     X    Widget toplevel, label, pushbutton, box, menu, exititem, first, widen, narrow, shuffle;
  1088.     X    Arg arg[25];
  1089.     X    unsigned int n;
  1090.     X    XtAppContext app;
  1091.     X
  1092.     X    toplevel = XtAppInitialize(&app, "Menu",
  1093.     X        (XrmOptionDescList) NULL, 0, &argc, argv,
  1094.     X        (String *) NULL, (ArgList) NULL, 0);
  1095.     X
  1096.     X    XtAppAddActions(app, actions, XtNumber(actions));
  1097.     X
  1098.     X    box = XtCreateManagedWidget("box", boxWidgetClass, toplevel,
  1099.     X    (Arg *) NULL, 0);
  1100.     X
  1101.     X    n = 0;
  1102.     X    XtSetArg(arg[n], XtNx, 10);    n++;
  1103.     X    XtSetArg(arg[n], XtNy, 10);    n++;
  1104.     X    XtSetArg(arg[n], XtNlabel, "Goodbye, world");    n++;
  1105.     X
  1106.     X    label = XtCreateManagedWidget("label", labelWidgetClass, box,
  1107.     X    arg, n);
  1108.     X
  1109.     X    n = 0;
  1110.     X    XtSetArg(arg[n], XtNx, 10); n++;
  1111.     X    XtSetArg(arg[n], XtNy, 40); n++;
  1112.     X    XtSetArg(arg[n], XtNlabel, "Exit menu");    n++;
  1113.     X
  1114.     X    pushbutton = XtCreateManagedWidget("pushbutton", pushbuttonWidgetClass,
  1115.     X    box, arg, n);
  1116.     X
  1117.     X    XtOverrideTranslations(pushbutton,
  1118.     X        XtParseTranslationTable(menuTranslations));
  1119.     X
  1120.     X    n = 0;
  1121.     X    XtSetArg(arg[n], XtNallowShellResize, TRUE);    n++;
  1122.     X
  1123.     X    menushell = XtCreatePopupShell("menuShell",
  1124.     X        overrideShellWidgetClass, pushbutton, arg, n);
  1125.     X
  1126.     X    menu = XtCreateManagedWidget("menu", menuWidgetClass,
  1127.     X        menushell, NULL, 0);
  1128.     X
  1129.     X    first = XtCreateManagedWidget("aaaaa", menuItemWidgetClass, menu, NULL, 0);
  1130.     X    widen = XtCreateManagedWidget("widen", menuItemWidgetClass, menu, NULL, 0);
  1131.     X    narrow = XtCreateManagedWidget("narrow", menuItemWidgetClass, menu, NULL, 0);
  1132.     X    shuffle = XtCreateManagedWidget("shuffle", menuItemWidgetClass, menu, NULL, 0);
  1133.     X    exititem = XtCreateManagedWidget("exit", menuItemWidgetClass, menu, NULL, 0);
  1134.     X
  1135.     X    XtAddCallback(widen, XtNcallback, Widen, first);
  1136.     X    XtAddCallback(narrow, XtNcallback, Narrow, first);
  1137.     X    XtAddCallback(shuffle, XtNcallback, Shuffle, first);
  1138.     X    XtAddCallback(exititem, XtNcallback, Goodbye, NULL);
  1139.     X
  1140.     X    XtRealizeWidget(toplevel);
  1141.     X    XtAppMainLoop(app);
  1142.     X}
  1143. SHAR_EOF
  1144. if test 5539 -ne "`wc -c < 'menu.c'`"
  1145. then
  1146.     echo shar: error transmitting "'menu.c'" '(should have been 5539 characters)'
  1147. fi
  1148. fi # end of overwriting check
  1149. echo shar: extracting "'sensitive.c'" '(2850 characters)'
  1150. if test -f 'sensitive.c'
  1151. then
  1152.     echo shar: will not over-write existing file "'sensitive.c'"
  1153. else
  1154. sed 's/^    X//' << \SHAR_EOF > 'sensitive.c'
  1155.     X/***********************************************************
  1156.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  1157.     X
  1158.     X                        All Rights Reserved
  1159.     X
  1160.     XPermission to use, copy, modify, and distribute these examples for any
  1161.     Xpurpose and without fee is hereby granted, provided that the above
  1162.     Xcopyright notice appear in all copies and that both that copyright
  1163.     Xnotice and this permission notice appear in supporting documentation,
  1164.     Xand that the name of Digital not be used in advertising or publicity
  1165.     Xpertaining to distribution of the software without specific, written
  1166.     Xprior permission.
  1167.     X
  1168.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  1169.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  1170.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  1171.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  1172.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  1173.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  1174.     XOR PERFORMANCE OF THIS SOFTWARE.
  1175.     X
  1176.     X******************************************************************/
  1177.     X
  1178.     X#include <X11/Intrinsic.h>
  1179.     X#include <X11/StringDefs.h>
  1180.     X
  1181.     X#include "Box.h"
  1182.     X#include "Label.h"
  1183.     X#include "Pushbutton.h"
  1184.     X
  1185.     Xvoid Goodbye(widget, clientData, callData)
  1186.     X    Widget widget;
  1187.     X    caddr_t clientData, callData;
  1188.     X{
  1189.     X    exit(0);
  1190.     X}
  1191.     X
  1192.     XWidget pushbutton;
  1193.     X
  1194.     Xvoid Sensitize(widget, clientData, callData)
  1195.     X    Widget widget;
  1196.     X    caddr_t clientData, callData;
  1197.     X{
  1198.     X    static Boolean sensitive = TRUE;
  1199.     X
  1200.     X    sensitive = !sensitive;
  1201.     X    XtSetSensitive(pushbutton, sensitive);
  1202.     X}
  1203.     X
  1204.     Xint main(argc, argv)
  1205.     X    unsigned int argc;
  1206.     X    char **argv;
  1207.     X{
  1208.     X    Widget toplevel, label, sensitize, box;
  1209.     X    Arg arg[25];
  1210.     X    unsigned int n;
  1211.     X    XtAppContext app;
  1212.     X
  1213.     X    toplevel = XtAppInitialize(&app, "Sensitive",
  1214.     X        (XrmOptionDescList) NULL, 0, &argc, argv,
  1215.     X        (String *) NULL, (ArgList) NULL, 0);
  1216.     X
  1217.     X    box = XtCreateManagedWidget("box", boxWidgetClass, toplevel,
  1218.     X    (Arg *) NULL, 0);
  1219.     X
  1220.     X    n = 0;
  1221.     X    XtSetArg(arg[n], XtNx, 10);    n++;
  1222.     X    XtSetArg(arg[n], XtNy, 10);    n++;
  1223.     X    XtSetArg(arg[n], XtNlabel, "Goodbye, world");    n++;
  1224.     X
  1225.     X    label = XtCreateManagedWidget("label", labelWidgetClass, box,
  1226.     X    arg, n);
  1227.     X
  1228.     X    n = 0;
  1229.     X    XtSetArg(arg[n], XtNx, 10); n++;
  1230.     X    XtSetArg(arg[n], XtNy, 40); n++;
  1231.     X    XtSetArg(arg[n], XtNlabel, "Toggle sensitivity");    n++;
  1232.     X
  1233.     X    sensitize = XtCreateManagedWidget("sensitize", pushbuttonWidgetClass,
  1234.     X    box, arg, n);
  1235.     X
  1236.     X    XtAddCallback(sensitize, XtNcallback, Sensitize, NULL);
  1237.     X
  1238.     X    n = 0;
  1239.     X    XtSetArg(arg[n], XtNx, 10); n++;
  1240.     X    XtSetArg(arg[n], XtNy, 70); n++;
  1241.     X    XtSetArg(arg[n], XtNlabel, "Click and die");    n++;
  1242.     X
  1243.     X    pushbutton = XtCreateManagedWidget("pushbutton", pushbuttonWidgetClass,
  1244.     X    box, arg, n);
  1245.     X
  1246.     X    XtAddCallback(pushbutton, XtNcallback, Goodbye, NULL);
  1247.     X
  1248.     X    XtRealizeWidget(toplevel);
  1249.     X    XtAppMainLoop(app);
  1250.     X}
  1251. SHAR_EOF
  1252. if test 2850 -ne "`wc -c < 'sensitive.c'`"
  1253. then
  1254.     echo shar: error transmitting "'sensitive.c'" '(should have been 2850 characters)'
  1255. fi
  1256. fi # end of overwriting check
  1257. echo shar: extracting "'xbiff.c'" '(5813 characters)'
  1258. if test -f 'xbiff.c'
  1259. then
  1260.     echo shar: will not over-write existing file "'xbiff.c'"
  1261. else
  1262. sed 's/^    X//' << \SHAR_EOF > 'xbiff.c'
  1263.     X/***********************************************************
  1264.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  1265.     X
  1266.     X                        All Rights Reserved
  1267.     X
  1268.     XPermission to use, copy, modify, and distribute these examples for any
  1269.     Xpurpose and without fee is hereby granted, provided that the above
  1270.     Xcopyright notice appear in all copies and that both that copyright
  1271.     Xnotice and this permission notice appear in supporting documentation,
  1272.     Xand that the name of Digital not be used in advertising or publicity
  1273.     Xpertaining to distribution of the software without specific, written
  1274.     Xprior permission.
  1275.     X
  1276.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  1277.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  1278.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  1279.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  1280.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  1281.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  1282.     XOR PERFORMANCE OF THIS SOFTWARE.
  1283.     X
  1284.     X******************************************************************/
  1285.     X
  1286.     X#include <X11/Intrinsic.h>
  1287.     X#include <X11/StringDefs.h>
  1288.     X#include <X11/Shell.h>
  1289.     X#include "Confirm.h"
  1290.     X
  1291.     X#include <stdio.h>
  1292.     X#include <strings.h>
  1293.     X#include <unistd.h>
  1294.     X#include <pwd.h>
  1295.     X#include <sys/stat.h>
  1296.     X
  1297.     XXtAppContext app;
  1298.     XWidget toplevel, confirm = NULL;
  1299.     Xunsigned long fileSize;
  1300.     X
  1301.     Xvoid GetMailFile(), Timer(), Popup(), CreatePopup(), Callback();
  1302.     XBoolean CheckNewMail();
  1303.     XString FindWhoFrom();
  1304.     X
  1305.     Xtypedef struct {
  1306.     X    Boolean quiet;
  1307.     X    String mail_file;
  1308.     X    int timeout;
  1309.     X    String default_message;
  1310.     X    String from_message;
  1311.     X} OptionsRec;
  1312.     X
  1313.     XOptionsRec options;
  1314.     X
  1315.     X#define BUFSIZE 1000
  1316.     X
  1317.     X#define Offset(field) XtOffsetOf(OptionsRec, field)
  1318.     X
  1319.     XXtResource resources[] = {
  1320.     X    {"quiet", "Quiet", XtRBoolean, sizeof(Boolean),
  1321.     X    Offset(quiet), XtRImmediate, (XtPointer) FALSE},
  1322.     X    {"mailFile", "MailFile", XtRString, sizeof(String),
  1323.     X    Offset(mail_file), XtRString, (XtPointer) NULL},
  1324.     X    {"interval", "Interval", XtRInt, sizeof(int),
  1325.     X    Offset(timeout), XtRImmediate, (XtPointer) 60},
  1326.     X    {"defaultMessage", "DefaultMessage", XtRString, sizeof(String),
  1327.     X    Offset(default_message), XtRString, "New mail from someone"},
  1328.     X    {"fromMessage", "FromMessage", XtRString, sizeof(String),
  1329.     X    Offset(from_message), XtRString, "New mail from %s"}
  1330.     X};
  1331.     X
  1332.     X#undef Offset
  1333.     X
  1334.     XXrmOptionDescRec optionDesc[] = {
  1335.     X    {"-quiet", "*quiet", XrmoptionNoArg, (XtPointer) "on"},
  1336.     X    {"-file", "*mailFile", XrmoptionSepArg, (XtPointer) NULL},
  1337.     X    {"-interval", "*interval", XrmoptionSepArg, (XtPointer) NULL}
  1338.     X};
  1339.     X
  1340.     Xmain(argc, argv)
  1341.     X    int argc;
  1342.     X    char *argv[];
  1343.     X{
  1344.     X    toplevel = XtAppInitialize(&app, "DemoBiff",
  1345.     X        optionDesc, XtNumber(optionDesc), &argc, argv,
  1346.     X            (String *) NULL, (ArgList) NULL, 0);
  1347.     X
  1348.     X    XtGetApplicationResources(toplevel, (XtPointer) &options,
  1349.     X        resources, XtNumber(resources), (Arg *) NULL, 0);
  1350.     X
  1351.     X    GetMailFile();
  1352.     X    (void) XtAppAddTimeOut(app, options.timeout * 1000,
  1353.     X        Timer, (XtPointer) NULL);
  1354.     X    XtAppMainLoop(app);
  1355.     X}
  1356.     X
  1357.     Xvoid GetMailFile()
  1358.     X{
  1359.     X    extern int getuid();
  1360.     X    struct passwd *pw;
  1361.     X    extern struct passwd *getpwuid();
  1362.     X    struct stat status;
  1363.     X    char buffer[BUFSIZE];
  1364.     X
  1365.     X    if (options.mail_file == NULL) {
  1366.     X    pw = getpwuid(getuid());
  1367.     X    if (pw == NULL) {
  1368.     X        XtAppErrorMsg(app, "noUser", "getMailFile",
  1369.     X            "DemoBiffError", "Could not get user name",
  1370.     X            (String *) NULL, (Cardinal *) NULL);
  1371.     X    }
  1372.     X    
  1373.     X    (void) sprintf(buffer, "/usr/spool/mail/%s", pw->pw_name);
  1374.     X    options.mail_file = XtNewString(buffer);
  1375.     X    }
  1376.     X
  1377.     X    if (access(options.mail_file, R_OK) != 0 ||
  1378.     X        stat(options.mail_file, &status) != 0) {
  1379.     X    XtAppErrorMsg(app, "noAccess", "getMailFile", "DemoBiffError",
  1380.     X        "Could not read mail spool file",
  1381.     X        (String *) NULL, (Cardinal *) NULL);
  1382.     X    }
  1383.     X
  1384.     X    fileSize = status.st_size;
  1385.     X}
  1386.     X
  1387.     Xvoid Timer(client_data, id)
  1388.     X    XtPointer client_data;
  1389.     X    XtIntervalId *id;
  1390.     X{
  1391.     X    if (!CheckNewMail()) {
  1392.     X    (void) XtAppAddTimeOut(app, options.timeout * 1000,
  1393.     X        Timer, (XtPointer) NULL);
  1394.     X    }
  1395.     X}
  1396.     X
  1397.     XBoolean CheckNewMail()
  1398.     X{
  1399.     X    struct stat status;
  1400.     X
  1401.     X    if (access(options.mail_file, R_OK) != 0 ||
  1402.     X        stat(options.mail_file, &status) != 0) {
  1403.     X    XtAppErrorMsg(app, "noAccess", "checkNewMail", "DemoBiffError",
  1404.     X        "Could not read mail spool file",
  1405.     X        (String *) NULL, (Cardinal *) NULL);
  1406.     X    }
  1407.     X
  1408.     X    if (status.st_size <= fileSize) {
  1409.     X    fileSize = status.st_size;
  1410.     X    return FALSE;
  1411.     X    }
  1412.     X
  1413.     X    Popup(FindWhoFrom());
  1414.     X    if (!options.quiet) XBell(XtDisplay(toplevel), 100);
  1415.     X    fileSize = status.st_size;
  1416.     X    return TRUE;
  1417.     X}
  1418.     X
  1419.     XString FindWhoFrom()
  1420.     X{
  1421.     X    char buffer[BUFSIZE];
  1422.     X    static char message[BUFSIZE];
  1423.     X    FILE *mail = fopen(options.mail_file, "r");
  1424.     X    int fromLen = strlen("From: ");
  1425.     X
  1426.     X    if (mail == NULL) {
  1427.     X    return options.default_message;
  1428.     X    }
  1429.     X
  1430.     X    if (fseek(mail, fileSize, 0) == -1) {
  1431.     X    fclose(mail);
  1432.     X    return options.default_message;
  1433.     X    }
  1434.     X
  1435.     X    while (1) {
  1436.     X    if (fgets(buffer, BUFSIZE, mail) == NULL ||
  1437.     X        buffer[0] == '\n') {
  1438.     X        fclose(mail);
  1439.     X        return options.default_message;
  1440.     X    }
  1441.     X    if (strncmp(buffer, "From: ", fromLen) == 0) {
  1442.     X        buffer[strlen(buffer)-1] = '\0';    /* Replace \n */
  1443.     X        (void) sprintf(message, options.from_message,
  1444.     X            &buffer[fromLen]);
  1445.     X        fclose(mail);
  1446.     X        return message;
  1447.     X    }
  1448.     X    }
  1449.     X}    
  1450.     X
  1451.     Xvoid Popup(string)
  1452.     X    String string;
  1453.     X{
  1454.     X    Arg args[10];
  1455.     X    int i = 0;
  1456.     X
  1457.     X    if (confirm == NULL) CreatePopup();
  1458.     X
  1459.     X    XtSetArg(args[i], XtNlabel, string);    i++;
  1460.     X    XtSetValues(confirm, args, i);
  1461.     X    XtPopup(toplevel, XtGrabNone);
  1462.     X}
  1463.     X
  1464.     Xvoid CreatePopup()
  1465.     X{
  1466.     X    confirm = XtCreateManagedWidget("confirm", confirmWidgetClass,
  1467.     X        toplevel, (Arg *) NULL, 0);
  1468.     X    XtAddCallback(confirm, XtNcallback, Callback, (XtPointer) NULL);
  1469.     X}
  1470.     X
  1471.     Xvoid Callback(w, client_data, call_data)
  1472.     X    Widget w;
  1473.     X    XtPointer client_data, call_data;
  1474.     X{
  1475.     X    (void) XtAppAddTimeOut(app, 0, Timer, (XtPointer) NULL);
  1476.     X}
  1477. SHAR_EOF
  1478. if test 5813 -ne "`wc -c < 'xbiff.c'`"
  1479. then
  1480.     echo shar: error transmitting "'xbiff.c'" '(should have been 5813 characters)'
  1481. fi
  1482. fi # end of overwriting check
  1483. echo shar: extracting "'xcalc.c'" '(9434 characters)'
  1484. if test -f 'xcalc.c'
  1485. then
  1486.     echo shar: will not over-write existing file "'xcalc.c'"
  1487. else
  1488. sed 's/^    X//' << \SHAR_EOF > 'xcalc.c'
  1489.     X/***********************************************************
  1490.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  1491.     X
  1492.     X                        All Rights Reserved
  1493.     X
  1494.     XPermission to use, copy, modify, and distribute these examples for any
  1495.     Xpurpose and without fee is hereby granted, provided that the above
  1496.     Xcopyright notice appear in all copies and that both that copyright
  1497.     Xnotice and this permission notice appear in supporting documentation,
  1498.     Xand that the name of Digital not be used in advertising or publicity
  1499.     Xpertaining to distribution of the software without specific, written
  1500.     Xprior permission.
  1501.     X
  1502.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  1503.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  1504.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  1505.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  1506.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  1507.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  1508.     XOR PERFORMANCE OF THIS SOFTWARE.
  1509.     X
  1510.     X******************************************************************/
  1511.     X
  1512.     X#include <X11/Intrinsic.h>
  1513.     X#include <X11/StringDefs.h>
  1514.     X#include <X11/Shell.h>
  1515.     X#include <X11/Xatom.h>
  1516.     X
  1517.     X#include "Box.h"
  1518.     X#include "Pushbutton.h"
  1519.     X#include "MenuItem.h"
  1520.     X#include "Menu.h"
  1521.     X
  1522.     X/* Calculator variables */
  1523.     Xdouble currentInput = 0, total = 0;
  1524.     XBoolean inputDecimal = FALSE, inputNumber = FALSE;
  1525.     Xdouble scale;
  1526.     Xdouble *numberToDisplay = &total;
  1527.     X
  1528.     X/* Pending operation */
  1529.     Xtypedef enum {Start, Equal, Add, Sub, Mul, Div} operation;
  1530.     Xoperation lastOp = Start;
  1531.     X
  1532.     X/* Interface variables */
  1533.     XXtAppContext app;
  1534.     XWidget display;        /* Calculator's display */
  1535.     XWidget menuShell;
  1536.     XBoolean hasSelection = FALSE;
  1537.     X
  1538.     Xvoid CreateInterface(), InputDigit(), InputDecimal(), Function(),
  1539.     X    Clear(), RefreshDisplay(), RepositionMenu(), Quit(), Select(),
  1540.     X    Paste(), PasteData(), LoseSelection();
  1541.     X
  1542.     XXtActionsRec actions[] = {
  1543.     X    {"RepositionMenu", RepositionMenu}
  1544.     X};
  1545.     X
  1546.     Xint main(argc, argv)
  1547.     X    int argc;
  1548.     X    char *argv[];
  1549.     X{
  1550.     X    Widget toplevel;
  1551.     X
  1552.     X    toplevel = XtAppInitialize(&app, "DemoCalc",
  1553.     X        (XrmOptionDescList) NULL, 0, &argc, argv,
  1554.     X            (String *) NULL, (ArgList) NULL, 0);
  1555.     X
  1556.     X    XtAppAddActions(app, actions, XtNumber(actions));
  1557.     X
  1558.     X    /* Make XtMenuPopup synchronous */
  1559.     X    XtRegisterGrabAction(XtMenuPopupAction, FALSE,
  1560.     X        ButtonPressMask | ButtonReleaseMask, GrabModeSync,
  1561.     X        GrabModeAsync);
  1562.     X
  1563.     X    CreateInterface(toplevel);
  1564.     X    RefreshDisplay();
  1565.     X    XtRealizeWidget(toplevel);
  1566.     X    XtAppMainLoop(app);
  1567.     X}
  1568.     X
  1569.     Xvoid CreateInterface(toplevel)
  1570.     X    Widget toplevel;
  1571.     X{
  1572.     X    Widget main, widget, menu;
  1573.     X
  1574.     X    main = XtCreateManagedWidget("main", boxWidgetClass,
  1575.     X        toplevel, (Arg *) NULL, 0);
  1576.     X    display = XtCreateManagedWidget("display", pushbuttonWidgetClass, 
  1577.     X        main, (Arg *) NULL, 0);
  1578.     X    XtAddCallback(display, XtNloseSelection,
  1579.     X        LoseSelection, (XtPointer) NULL);
  1580.     X
  1581.     X#define CreatePushbutton(name, callback, data) \
  1582.     X    widget = XtCreateManagedWidget(name, pushbuttonWidgetClass, \
  1583.     X        main, (Arg *) NULL, 0); \
  1584.     X    XtAddCallback(widget, XtNcallback, callback, (XtPointer) data);
  1585.     X
  1586.     X    CreatePushbutton("button0", InputDigit, 0);
  1587.     X    CreatePushbutton("button1", InputDigit, 1);
  1588.     X    CreatePushbutton("button2", InputDigit, 2);
  1589.     X    CreatePushbutton("button3", InputDigit, 3);
  1590.     X    CreatePushbutton("button4", InputDigit, 4);
  1591.     X    CreatePushbutton("button5", InputDigit, 5);
  1592.     X    CreatePushbutton("button6", InputDigit, 6);
  1593.     X    CreatePushbutton("button7", InputDigit, 7);
  1594.     X    CreatePushbutton("button8", InputDigit, 8);
  1595.     X    CreatePushbutton("button9", InputDigit, 9);
  1596.     X
  1597.     X    CreatePushbutton("decimal", InputDecimal, NULL);
  1598.     X
  1599.     X    CreatePushbutton("plus", Function, Add);
  1600.     X    CreatePushbutton("minus", Function, Sub);
  1601.     X    CreatePushbutton("times", Function, Mul);
  1602.     X    CreatePushbutton("divide", Function, Div);
  1603.     X    CreatePushbutton("equals", Function, Equal);
  1604.     X
  1605.     X    CreatePushbutton("clearEntry", Clear, FALSE);
  1606.     X    CreatePushbutton("clear", Clear, TRUE);
  1607.     X#undef CreatePushbutton
  1608.     X
  1609.     X    menuShell = XtCreatePopupShell("menuShell",
  1610.     X        overrideShellWidgetClass, main, (Arg *) NULL, 0);
  1611.     X    menu = XtCreateManagedWidget("menu", menuWidgetClass, menuShell,
  1612.     X        (Arg *) NULL, 0);
  1613.     X
  1614.     X#define CreateMenuItem(name, callback) \
  1615.     X    widget = XtCreateManagedWidget(name, menuItemWidgetClass, \
  1616.     X        menu, (Arg *) NULL, 0); \
  1617.     X    XtAddCallback(widget, XtNcallback, callback, (XtPointer) NULL);
  1618.     X
  1619.     X    CreateMenuItem("select", Select);
  1620.     X    CreateMenuItem("paste", Paste);
  1621.     X    CreateMenuItem("quit", Quit);
  1622.     X#undef CreateMenuItem
  1623.     X    XtInstallAllAccelerators(main, main);
  1624.     X}
  1625.     X
  1626.     Xvoid InputDigit(w, client_data, call_data)
  1627.     X    Widget w;
  1628.     X    XtPointer client_data;    /* Digit to input */
  1629.     X    XtPointer call_data;
  1630.     X{
  1631.     X    int num = (int) client_data;
  1632.     X
  1633.     X    if (inputDecimal) {
  1634.     X    currentInput += num * scale;
  1635.     X    scale /= 10;
  1636.     X    } else currentInput = currentInput * 10 + num;
  1637.     X
  1638.     X    numberToDisplay = ¤tInput;
  1639.     X    RefreshDisplay();
  1640.     X    inputNumber = TRUE;
  1641.     X}
  1642.     X
  1643.     Xvoid InputDecimal(w, client_data, call_data)
  1644.     X    Widget w;
  1645.     X    XtPointer client_data, call_data;
  1646.     X{
  1647.     X    inputDecimal = inputNumber = TRUE;
  1648.     X    scale = 0.1;
  1649.     X    numberToDisplay = ¤tInput;
  1650.     X    RefreshDisplay();
  1651.     X}
  1652.     X
  1653.     Xvoid Function(w, client_data, call_data)
  1654.     X    Widget w;
  1655.     X    XtPointer client_data;    /* Operation code */
  1656.     X    XtPointer call_data;
  1657.     X{
  1658.     X    switch (lastOp) {
  1659.     X    case Add:
  1660.     X        total += currentInput;
  1661.     X        break;
  1662.     X    case Sub:
  1663.     X        total -= currentInput;
  1664.     X        break;
  1665.     X    case Mul:
  1666.     X        total *= currentInput;
  1667.     X        break;
  1668.     X    case Div:
  1669.     X        if (currentInput == 0.0) XBell(XtDisplay(display), 100);
  1670.     X        else total /= currentInput;
  1671.     X        break;
  1672.     X    case Equal:
  1673.     X        if (inputNumber) total = currentInput;
  1674.     X        break;
  1675.     X    case Start:
  1676.     X        total = currentInput;
  1677.     X        break;
  1678.     X    }
  1679.     X    lastOp = (operation) client_data;
  1680.     X    currentInput = 0;
  1681.     X    inputDecimal = inputNumber = FALSE;
  1682.     X
  1683.     X    numberToDisplay = &total;
  1684.     X    RefreshDisplay();
  1685.     X}
  1686.     X
  1687.     Xvoid Clear(w, client_data, call_data)
  1688.     X    Widget w;
  1689.     X    XtPointer client_data;    /* FALSE for Clear Entry */
  1690.     X    XtPointer call_data;
  1691.     X{
  1692.     X    currentInput = 0;
  1693.     X    if ((Boolean) client_data) {
  1694.     X    total = 0;
  1695.     X    lastOp = Start;
  1696.     X    }
  1697.     X    inputDecimal = inputNumber = FALSE;
  1698.     X
  1699.     X    numberToDisplay = ¤tInput;
  1700.     X    RefreshDisplay();
  1701.     X}
  1702.     X
  1703.     Xvoid RefreshDisplay()
  1704.     X{
  1705.     X    char buffer[100];
  1706.     X    Arg args[10];
  1707.     X    int i = 0;
  1708.     X
  1709.     X    if (hasSelection) {        /* Get rid of it */
  1710.     X    LabelSelectText(display, XA_PRIMARY, FALSE);
  1711.     X    /* LoseSelection resets hasSelection and uninverts display */
  1712.     X    }
  1713.     X
  1714.     X    sprintf(buffer, "%g", *numberToDisplay);
  1715.     X    XtSetArg(args[i], XtNlabel, buffer);    i++;
  1716.     X    XtSetValues(display, args, i);
  1717.     X}
  1718.     X
  1719.     Xvoid RepositionMenu(w, event, params, num_params)
  1720.     X    Widget w;
  1721.     X    XEvent *event;
  1722.     X    String *params;
  1723.     X    Cardinal *num_params;
  1724.     X{
  1725.     X    XButtonEvent *b = &event->xbutton;
  1726.     X    Dimension width, height, border;
  1727.     X    Arg arg[25];
  1728.     X    int n;
  1729.     X
  1730.     X    if (event->type != ButtonPress) return;
  1731.     X
  1732.     X    /* Size isn't valid before realizing */
  1733.     X    XtRealizeWidget(menuShell);
  1734.     X
  1735.     X    /* Fetch size */
  1736.     X    n = 0;
  1737.     X    XtSetArg(arg[n], XtNwidth, &width);        n++;
  1738.     X    XtSetArg(arg[n], XtNheight, &height);    n++;
  1739.     X    XtSetArg(arg[n], XtNborderWidth, &border);    n++;
  1740.     X    XtGetValues(menuShell, arg, n);
  1741.     X
  1742.     X    /* Reposition menu */
  1743.     X    n = 0;
  1744.     X    XtSetArg(arg[n], XtNx, b->x_root - width/2 - border);    n++;
  1745.     X    XtSetArg(arg[n], XtNy, b->y_root - height/2 - border);    n++;
  1746.     X    XtSetValues(menuShell, arg, n);
  1747.     X}
  1748.     X
  1749.     Xvoid Quit(w, client_data, call_data)
  1750.     X    Widget w;
  1751.     X    XtPointer client_data, call_data;
  1752.     X{
  1753.     X    exit(0);
  1754.     X}
  1755.     X
  1756.     Xvoid Select(w, client_data, call_data)
  1757.     X    Widget w;
  1758.     X    XtPointer client_data, call_data;
  1759.     X{
  1760.     X    if (hasSelection) return;
  1761.     X
  1762.     X    /* Ask for selection */
  1763.     X    if (LabelSelectText(display, XA_PRIMARY, TRUE)) {
  1764.     X    hasSelection = TRUE;
  1765.     X
  1766.     X    /* Invert display widget */
  1767.     X    XtCallActionProc(display, "invert", (XEvent *) NULL,
  1768.     X        (String *) NULL, 0);
  1769.     X    }
  1770.     X}
  1771.     X
  1772.     Xvoid LoseSelection(w, client_data, call_data)
  1773.     X    Widget w;
  1774.     X    XtPointer client_data, call_data;
  1775.     X{
  1776.     X    hasSelection = FALSE;
  1777.     X
  1778.     X    /* Uninvert the display */
  1779.     X    XtCallActionProc(display, "uninvert", (XEvent *) NULL,
  1780.     X        (String *) NULL, 0);
  1781.     X}
  1782.     X
  1783.     Xvoid Paste(w, client_data, call_data)
  1784.     X    Widget w;
  1785.     X    XtPointer client_data, call_data;
  1786.     X{
  1787.     X    XtGetSelectionValue(display, XA_PRIMARY, XA_STRING, PasteData,
  1788.     X        (XtPointer) NULL, XtLastTimestampProcessed(XtDisplay(w)));
  1789.     X}
  1790.     X
  1791.     Xvoid PasteData(w, client_data, selection, type, value, length, format)
  1792.     X    Widget w;
  1793.     X    XtPointer client_data;
  1794.     X    Atom *selection, *type;
  1795.     X    XtPointer value;
  1796.     X    unsigned long *length;
  1797.     X    int *format;
  1798.     X{
  1799.     X    register int i;
  1800.     X    char *ch = (char *) value;
  1801.     X
  1802.     X    /* Make sure we got what we expected */
  1803.     X    if (*selection != XA_PRIMARY || *type != XA_STRING ||
  1804.     X        *format != 8 || value == NULL) return;
  1805.     X
  1806.     X    for (i = 0; i < *length; i++) {
  1807.     X    if (ch[i] >= '0' && ch[i] <= '9') {
  1808.     X        InputDigit(display, (XtPointer) (ch[i] - '0'),
  1809.     X            (XtPointer) NULL);
  1810.     X    } else switch (ch[i]) {
  1811.     X        case '+':
  1812.     X        Function(display, (XtPointer) Add, (XtPointer) NULL);
  1813.     X        break;
  1814.     X        case '-':
  1815.     X        Function(display, (XtPointer) Sub, (XtPointer) NULL);
  1816.     X        break;
  1817.     X        case '*':
  1818.     X        Function(display, (XtPointer) Mul, (XtPointer) NULL);
  1819.     X        break;
  1820.     X        case '/':
  1821.     X        Function(display, (XtPointer) Div, (XtPointer) NULL);
  1822.     X        break;
  1823.     X        case '=':
  1824.     X        Function(display, (XtPointer) Equal, (XtPointer) NULL);
  1825.     X        break;
  1826.     X        case '.':
  1827.     X        InputDecimal(display, (XtPointer) NULL,
  1828.     X            (XtPointer) NULL);
  1829.     X        break;
  1830.     X        default:
  1831.     X        return;
  1832.     X    }
  1833.     X    }
  1834.     X    Function(display, (XtPointer) Equal, (XtPointer) NULL);
  1835.     X
  1836.     X    XtFree((XtPointer) value);
  1837.     X}
  1838. SHAR_EOF
  1839. if test 9434 -ne "`wc -c < 'xcalc.c'`"
  1840. then
  1841.     echo shar: error transmitting "'xcalc.c'" '(should have been 9434 characters)'
  1842. fi
  1843. fi # end of overwriting check
  1844. echo shar: extracting "'xmonitor.c'" '(3792 characters)'
  1845. if test -f 'xmonitor.c'
  1846. then
  1847.     echo shar: will not over-write existing file "'xmonitor.c'"
  1848. else
  1849. sed 's/^    X//' << \SHAR_EOF > 'xmonitor.c'
  1850.     X/***********************************************************
  1851.     XCopyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  1852.     X
  1853.     X                        All Rights Reserved
  1854.     X
  1855.     XPermission to use, copy, modify, and distribute these examples for any
  1856.     Xpurpose and without fee is hereby granted, provided that the above
  1857.     Xcopyright notice appear in all copies and that both that copyright
  1858.     Xnotice and this permission notice appear in supporting documentation,
  1859.     Xand that the name of Digital not be used in advertising or publicity
  1860.     Xpertaining to distribution of the software without specific, written
  1861.     Xprior permission.
  1862.     X
  1863.     XDIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  1864.     XSOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  1865.     XFITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  1866.     XOR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  1867.     XOF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  1868.     XOR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  1869.     XOR PERFORMANCE OF THIS SOFTWARE.
  1870.     X
  1871.     X******************************************************************/
  1872.     X
  1873.     X#include <stdio.h>
  1874.     X#include <X11/Intrinsic.h>
  1875.     X#include <X11/StringDefs.h>
  1876.     X#include "Graph.h"
  1877.     X#include "BarDisplay.h"
  1878.     X
  1879.     XXtAppContext app;
  1880.     XWidget graph;
  1881.     Xint *fields;
  1882.     X
  1883.     Xvoid Timer(), CreateGraphWidget(), GetGraphData();
  1884.     Xtypedef struct {
  1885.     X    int timeout;
  1886.     X    int num_fields;
  1887.     X    String command;
  1888.     X} OptionsRec;
  1889.     X
  1890.     XOptionsRec options;
  1891.     X
  1892.     X#define Offset(field) XtOffsetOf(OptionsRec, field)
  1893.     X
  1894.     XXtResource resources[] = {
  1895.     X    {"interval", "Interval", XtRInt, sizeof(int),
  1896.     X    Offset(timeout), XtRImmediate, (XtPointer) 5},
  1897.     X    {"numFields", "NumFields", XtRInt, sizeof(int),
  1898.     X    Offset(num_fields), XtRImmediate, (XtPointer) 3},
  1899.     X    {"command", "Command", XtRString, sizeof(String),
  1900.     X    Offset(command), XtRString,
  1901.     X    "vmstat 1 2 | awk '{if (NR == 4) print $(NF-2), $(NF-1), $(NF)}'"}
  1902.     X};
  1903.     X
  1904.     X#undef Offset
  1905.     X
  1906.     XXrmOptionDescRec optionDesc[] = {
  1907.     X    {"-interval", "*interval", XrmoptionSepArg, (XtPointer) NULL}
  1908.     X};
  1909.     X
  1910.     Xmain(argc, argv)
  1911.     X    int argc;
  1912.     X    char *argv[];
  1913.     X{
  1914.     X    Widget toplevel;
  1915.     X
  1916.     X    toplevel = XtAppInitialize(&app, "DemoMonitor",
  1917.     X        optionDesc, XtNumber(optionDesc), &argc, argv,
  1918.     X            (String *) NULL, (ArgList) NULL, 0);
  1919.     X
  1920.     X    XtGetApplicationResources(toplevel, (XtPointer) &options,
  1921.     X        resources, XtNumber(resources), (Arg *) NULL, 0);
  1922.     X
  1923.     X    fields = (int *) XtCalloc(options.num_fields, sizeof(int));
  1924.     X
  1925.     X    CreateGraphWidget(toplevel);
  1926.     X    XtRealizeWidget(toplevel);
  1927.     X
  1928.     X    (void) XtAppAddTimeOut(app, options.timeout * 1000,
  1929.     X        Timer, (XtPointer) NULL);
  1930.     X
  1931.     X    XtAppMainLoop(app);
  1932.     X}
  1933.     X
  1934.     Xvoid CreateGraphWidget(parent)
  1935.     X    Widget parent;
  1936.     X{
  1937.     X    Arg args[10];
  1938.     X    int n;
  1939.     X
  1940.     X    GetGraphData();
  1941.     X
  1942.     X    n = 0;
  1943.     X    XtSetArg(args[n], XtNnumEntries, options.num_fields);   n++;
  1944.     X    XtSetArg(args[n], XtNvalues, fields);            n++;
  1945.     X    graph = XtCreateManagedWidget("graph", graphWidgetClass, parent,
  1946.     X        args, n);
  1947.     X
  1948.     X    (void) XtCreateWidget("bar", barDisplayObjectClass, graph,
  1949.     X        (Arg *) NULL, 0);
  1950.     X}
  1951.     X
  1952.     Xvoid Timer(client_data, id)
  1953.     X    XtPointer client_data;
  1954.     X    XtIntervalId *id;
  1955.     X{
  1956.     X    Arg args[10];
  1957.     X    int n;
  1958.     X
  1959.     X    GetGraphData();
  1960.     X
  1961.     X    n = 0;
  1962.     X    XtSetArg(args[n], XtNvalues, fields);    n++;
  1963.     X    XtSetValues(graph, args, n);
  1964.     X
  1965.     X    (void) XtAppAddTimeOut(app, options.timeout * 1000,
  1966.     X        Timer, (XtPointer) NULL);
  1967.     X}
  1968.     X
  1969.     Xvoid GetGraphData()
  1970.     X{
  1971.     X    int status;
  1972.     X    FILE *f;
  1973.     X    int i;
  1974.     X
  1975.     X    f = popen(options.command, "r");
  1976.     X
  1977.     X    for (i = 0; i < options.num_fields; i++) {
  1978.     X    status = fscanf(f, "%d", &fields[i]);
  1979.     X    if (status != 1) {
  1980.     X            XtAppWarningMsg(app, "noData", "getGraphData",
  1981.     X                    "DemoLoadError", "Not enough fields in data",
  1982.     X            (String *) NULL, (Cardinal *) NULL);
  1983.     X        for (; i < options.num_fields; i++) fields[i] = 0;
  1984.     X        break;
  1985.     X    }
  1986.     X    }
  1987.     X
  1988.     X    pclose(f);
  1989.     X}
  1990. SHAR_EOF
  1991. if test 3792 -ne "`wc -c < 'xmonitor.c'`"
  1992. then
  1993.     echo shar: error transmitting "'xmonitor.c'" '(should have been 3792 characters)'
  1994. fi
  1995. fi # end of overwriting check
  1996. echo shar: extracting "'DemoBiff'" '(1200 characters)'
  1997. if test -f 'DemoBiff'
  1998. then
  1999.     echo shar: will not over-write existing file "'DemoBiff'"
  2000. else
  2001. sed 's/^    X//' << \SHAR_EOF > 'DemoBiff'
  2002.     X!***********************************************************
  2003.     X!Copyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  2004.     X!
  2005.     X!                        All Rights Reserved
  2006.     X!
  2007.     X!Permission to use, copy, modify, and distribute these examples for any
  2008.     X!purpose and without fee is hereby granted, provided that the above
  2009.     X!copyright notice appear in all copies and that both that copyright
  2010.     X!notice and this permission notice appear in supporting documentation,
  2011.     X!and that the name of Digital not be used in advertising or publicity
  2012.     X!pertaining to distribution of the software without specific, written
  2013.     X!prior permission.
  2014.     X!
  2015.     X!DIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  2016.     X!SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  2017.     X!FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  2018.     X!OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  2019.     X!OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  2020.     X!OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  2021.     X!OR PERFORMANCE OF THIS SOFTWARE.
  2022.     X!
  2023.     X!******************************************************************
  2024.     X
  2025.     X*AllowShellResize : TRUE
  2026.     X*Title : Mail notifier
  2027. SHAR_EOF
  2028. if test 1200 -ne "`wc -c < 'DemoBiff'`"
  2029. then
  2030.     echo shar: error transmitting "'DemoBiff'" '(should have been 1200 characters)'
  2031. fi
  2032. fi # end of overwriting check
  2033. echo shar: extracting "'DemoCalc'" '(3262 characters)'
  2034. if test -f 'DemoCalc'
  2035. then
  2036.     echo shar: will not over-write existing file "'DemoCalc'"
  2037. else
  2038. sed 's/^    X//' << \SHAR_EOF > 'DemoCalc'
  2039.     X!***********************************************************
  2040.     X!Copyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  2041.     X!
  2042.     X!                        All Rights Reserved
  2043.     X!
  2044.     X!Permission to use, copy, modify, and distribute these examples for any
  2045.     X!purpose and without fee is hereby granted, provided that the above
  2046.     X!copyright notice appear in all copies and that both that copyright
  2047.     X!notice and this permission notice appear in supporting documentation,
  2048.     X!and that the name of Digital not be used in advertising or publicity
  2049.     X!pertaining to distribution of the software without specific, written
  2050.     X!prior permission.
  2051.     X!
  2052.     X!DIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  2053.     X!SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  2054.     X!FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  2055.     X!OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  2056.     X!OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  2057.     X!OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  2058.     X!OR PERFORMANCE OF THIS SOFTWARE.
  2059.     X!
  2060.     X!******************************************************************
  2061.     X
  2062.     X*input : TRUE
  2063.     X*main.translations : <Btn2Down> : RepositionMenu() MenuPopup(menuShell)
  2064.     X
  2065.     X*display.x : 10
  2066.     X*display.y : 10
  2067.     X*display.width : 130
  2068.     X*display.justify : Right
  2069.     X*display.translations : #replace
  2070.     X
  2071.     X*Pushbutton.width : 25
  2072.     X*Pushbutton.justify : Center
  2073.     X
  2074.     X*button0.x : 45
  2075.     X*button0.y : 150
  2076.     X*button0.label :0
  2077.     X*button0.accelerators : :<Key>0 : notify()
  2078.     X
  2079.     X*button1.x : 10
  2080.     X*button1.y : 115
  2081.     X*button1.label :1
  2082.     X*button1.accelerators : :<Key>1 : notify()
  2083.     X
  2084.     X*button2.x : 45
  2085.     X*button2.y : 115
  2086.     X*button2.label :2
  2087.     X*button2.accelerators : :<Key>2 : notify()
  2088.     X
  2089.     X*button3.x : 80
  2090.     X*button3.y : 115
  2091.     X*button3.label :3
  2092.     X*button3.accelerators : :<Key>3 : notify()
  2093.     X
  2094.     X*button4.x : 10
  2095.     X*button4.y : 80
  2096.     X*button4.label :4
  2097.     X*button4.accelerators : :<Key>4 : notify()
  2098.     X
  2099.     X*button5.x : 45
  2100.     X*button5.y : 80
  2101.     X*button5.label :5
  2102.     X*button5.accelerators : :<Key>5 : notify()
  2103.     X
  2104.     X*button6.x : 80
  2105.     X*button6.y : 80
  2106.     X*button6.label :6
  2107.     X*button6.accelerators : :<Key>6 : notify()
  2108.     X
  2109.     X*button7.x : 10
  2110.     X*button7.y : 45
  2111.     X*button7.label :7
  2112.     X*button7.accelerators : :<Key>7 : notify()
  2113.     X
  2114.     X*button8.x : 45
  2115.     X*button8.y : 45
  2116.     X*button8.label :8
  2117.     X*button8.accelerators : :<Key>8 : notify()
  2118.     X
  2119.     X*button9.x : 80
  2120.     X*button9.y : 45
  2121.     X*button9.label :9
  2122.     X*button9.accelerators : :<Key>9 : notify()
  2123.     X
  2124.     X*decimal.x : 80
  2125.     X*decimal.y : 150
  2126.     X*decimal.label :.
  2127.     X*decimal.accelerators : :<Key>. : notify()
  2128.     X
  2129.     X*plus.x : 115
  2130.     X*plus.y : 45
  2131.     X*plus.label :+
  2132.     X*plus.accelerators : :<Key>+ : notify()
  2133.     X
  2134.     X*minus.x : 115
  2135.     X*minus.y : 80
  2136.     X*minus.label :-
  2137.     X*minus.accelerators : :<Key>- : notify()
  2138.     X
  2139.     X*times.x : 115
  2140.     X*times.y : 115
  2141.     X*times.label :*
  2142.     X*times.accelerators : :<Key>* : notify()
  2143.     X
  2144.     X*divide.x : 115
  2145.     X*divide.y : 150
  2146.     X*divide.label :/
  2147.     X*divide.accelerators : :<Key>/ : notify()
  2148.     X
  2149.     X*equals.x : 115
  2150.     X*equals.y : 185
  2151.     X*equals.label :=
  2152.     X*equals.accelerators : :<Key>= : notify()
  2153.     X
  2154.     X*clearEntry.x : 10
  2155.     X*clearEntry.y : 150
  2156.     X*clearEntry.label :CE
  2157.     X*clearEntry.accelerators : :<Key>c : notify()
  2158.     X
  2159.     X*clear.x : 10
  2160.     X*clear.y : 185
  2161.     X*clear.label :C
  2162.     X*clear.accelerators : :<Key>C : notify()
  2163.     X
  2164.     X*select.label :Select
  2165.     X*select.accelerators : <Key>S : notify()
  2166.     X
  2167.     X*paste.label :Paste
  2168.     X*paste.accelerators : <Key>P : notify()
  2169.     X
  2170.     X*quit.label :Quit
  2171.     X*quit.accelerators : <Key>Q : notify()
  2172. SHAR_EOF
  2173. if test 3262 -ne "`wc -c < 'DemoCalc'`"
  2174. then
  2175.     echo shar: error transmitting "'DemoCalc'" '(should have been 3262 characters)'
  2176. fi
  2177. fi # end of overwriting check
  2178. echo shar: extracting "'DemoMonitor'" '(1208 characters)'
  2179. if test -f 'DemoMonitor'
  2180. then
  2181.     echo shar: will not over-write existing file "'DemoMonitor'"
  2182. else
  2183. sed 's/^    X//' << \SHAR_EOF > 'DemoMonitor'
  2184.     X!***********************************************************
  2185.     X!Copyright 1990 by Digital Equipment Corporation, Maynard, Massachusetts.
  2186.     X!
  2187.     X!                        All Rights Reserved
  2188.     X!
  2189.     X!Permission to use, copy, modify, and distribute these examples for any
  2190.     X!purpose and without fee is hereby granted, provided that the above
  2191.     X!copyright notice appear in all copies and that both that copyright
  2192.     X!notice and this permission notice appear in supporting documentation,
  2193.     X!and that the name of Digital not be used in advertising or publicity
  2194.     X!pertaining to distribution of the software without specific, written
  2195.     X!prior permission.
  2196.     X!
  2197.     X!DIGITAL AND THE AUTHORS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
  2198.     X!SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
  2199.     X!FITNESS, IN NO EVENT SHALL DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT
  2200.     X!OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS
  2201.     X!OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
  2202.     X!OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE
  2203.     X!OR PERFORMANCE OF THIS SOFTWARE.
  2204.     X!
  2205.     X!******************************************************************
  2206.     X
  2207.     X*graph.labels: User\nSystem\nIdle
  2208.     X*graph.maxValue : 100
  2209. SHAR_EOF
  2210. if test 1208 -ne "`wc -c < 'DemoMonitor'`"
  2211. then
  2212.     echo shar: error transmitting "'DemoMonitor'" '(should have been 1208 characters)'
  2213. fi
  2214. fi # end of overwriting check
  2215. #    End of shell archive
  2216. exit 0
  2217.  
  2218. dan
  2219. ----------------------------------------------------
  2220. O'Reilly && Associates   argv@sun.com / argv@ora.com
  2221. Opinions expressed reflect those of the author only.
  2222.